home *** CD-ROM | disk | FTP | other *** search
/ Mac Mania 2 / MacMania 2.toast / Demo's / Tools&Utilities / Programming / PowerLisp 1.1 / PowerLisp 1.1 README next >
Encoding:
Text File  |  1994-04-11  |  10.0 KB  |  275 lines  |  [TEXT/ROSA]

  1. PowerLisp 1.1
  2. 4/4/94
  3. ---------------
  4. This is the public release of PowerLisp 1.1. It contains a significant
  5. number of new features, bug fixes, and enhancements over version 1.01.
  6. I will go over a number of these here, but probably won't cover all
  7. of them.
  8.  
  9. I greatly appreciate the support of those of you who have chosen
  10. to register PowerLisp, and who have communicated with me regarding
  11. bugs, requested enhancements, etc. Many of the added features are
  12. in direct response to those communications.
  13.  
  14. Thanks to Ken Long for his improved color icons, which I have
  15. included in this released version.
  16.  
  17. Editor
  18. The editor, PowerEdit, has been enhanced in a number of ways,
  19. and a number of bugs have been fixed. 
  20.  
  21. The editor now uses its own heap, which is limited in size to
  22. 200k. A source file of about 80k is likely to fill it up. When
  23. the editor limit is reached, text is written to disk in a temporary
  24. file. As a result, you may edit many, large files without any
  25. effect on the space you have for your Lisp programs. I find the
  26. occasional slowdown from disk activity is preferable to the way
  27. the editor ate up memory in 1.01. Currently a temporary file for
  28. each open file is created, when the editor needs memory. These
  29. files should be deleted when the program exits.
  30.  
  31. The editor has been cleaned up internally, which seems to have
  32. eliminated some spurious crashes and data loss. I still am not
  33. 100% confident in it, so keep good backups of your source files.
  34.  
  35. Line Wrap mode works pretty well now. You can easily turn it on,
  36. but you can't make it the default yet. For large files it can
  37. get pretty sluggish. I usually turn it on when I need to view a long
  38. line, and leave it off the rest of the time.
  39.  
  40. Lisp mode has been improved. As several of you noted, it seems logical
  41. that when a Lisp expression is outlined, pressing Enter should
  42. execute the entire expression, rather than just the current line.
  43. I have implemented this. To make it obvious, the whole expression
  44. gets highlighted for a fraction of a second before executing it.
  45.  
  46. You may now create bold and italic text in the editor. The commands
  47. are located in the bottom of the Edit menu. Lisp mode no longer
  48. automatically italicizes comments. Bold and italicized text gets
  49. saved and re-loaded correctly.
  50.  
  51. Another problem several people had was getting buried in open
  52. parentheses. When you are entering expressions, and have not closed
  53. enough levels of parentheses, the system seems frozen. To make it
  54. clearer, the editor now shows the number of open parentheses
  55. in the message bar. I think this helps.
  56.  
  57. Editor Known Bugs
  58. Line Wrap mode and Lisp mode are not totally compatible. I avoid
  59. using them at the same time.
  60.  
  61. PowerLisp Environment
  62. A major addition is the Memory window, which can be displayed via
  63. the Memory command in the new Misc menu. It brings up a window
  64. which gives you animated displays of the PowerLisp heaps, stacks
  65. and editor heap usage. It is useful for monitoring memory usage while
  66. you are running, and noticing how much time is spent in garbage
  67. collection. When you see the Nodes and Heap bars shrinking you
  68. know garbage is being recycled.
  69.  
  70. Common Lisp Implementation
  71. PowerLisp 1.1 is much closer to CLTL2 compatibility than was
  72. 1.01. A larg number of functions and macros have been added, and
  73. several which were incorrectly implemented have been fixed. Several
  74. more libraries have been added, as many of the new, corrected
  75. implementations are in Common Lisp and replace built-in C++
  76. functions.
  77.  
  78. Complex numbers and arbitrarily large integers are now supported
  79. in PowerLisp.
  80.  
  81. The main item which is still lacking, relative to CLTL2, is
  82. CLOS. Here and there you may still stumble on some missing functions, 
  83. but hopefully this won't come up often.
  84.  
  85. Scope and Extent
  86. The important fix here is support for special declarations
  87. has been added to both the interpreter and compiler. Local variables
  88. which are declared special should now be handled correctly. In
  89. 1.01, only variables declared via defvar or defparameter were 
  90. considered special (plus some built-in variables like *package*).
  91.  
  92. Type Specifiers
  93. This area has been improved a lot, with most type expressions
  94. supported in most places. I hope to be able to remove the qualifiers
  95. so let me know if you notice any problems.
  96.  
  97. Program Structure
  98. In 1.01 the defun and defmacro macros did not behave correctly
  99. in non top-level contexts. This has been corrected.
  100.  
  101. Predicates
  102. Most of the missing predicates have been added.
  103.  
  104. Control Structure
  105. It was pointed out to me that the do macro in 1.01 was incorrect.
  106. In particular, it did not update the set of local variables
  107. 'in parallel' as it was supposed to do. This has been fixed in 1.1.
  108. Also, implementations of psetq and all of the multiple value handling
  109. macros are included.
  110.  
  111. A number of mapping functions which were missing in 1.01 have 
  112. been added.
  113.  
  114. Compiler
  115. The compiler now correctly compiles flet special forms, structures,
  116. and special declarations. labels forms compile, but the generated
  117. code is the same as for flet.
  118. labels works correctly when interpreted. Some bugs in the interpreter
  119. relating to these forms and function closures were identified and
  120. fixed.
  121.  
  122. The compiler now behaves in accordance with CLTL2 concerning 
  123. evaluation of compiled forms. Forms are not evaluated in general,
  124. although eval-when can be used to force evaluation at compile time.
  125.  
  126. Compiled libraries now use the extension (by default) .fasl which
  127. is commonly used by other Lisp systems. Of course these files are not
  128. compatible with other Lisp systems. Compiled libraries are significantly
  129. smaller than 1.01 libraries. This is accomplished mostly by eliminating
  130. redundancy in the symbol tables. This makes loading faster.
  131. Libraries are about 30% smaller, and should still be compatible
  132. with 1.01 libraries. That is, 1.01 libraries should still load into
  133. 1.1, but 1.1 libraries will not be usable by 1.01.
  134.  
  135. I recommend that you recompile any of your own libraries with
  136. version 1.1. This will allow you to benefit from the smaller
  137. libraries, faster load time and corrected compiler behavior.
  138.  
  139. The 'missing function' warning messages which so often were emitted
  140. by the compiler are now eliminated. My hope is to add a better,
  141. more useful warning facility to replace this. In the mean time
  142. it was more of a source of confusion and annoyance than a help.
  143. At any rate, if a function is missing at run time, you will get
  144. an error message (the system won't crash).
  145.  
  146. Declarations
  147. As mentioned before, special declarations are now handled 
  148. correctly by the compiler and interpreter. Most other declarations
  149. are currently ignored by both the compiler and interpreter.
  150.  
  151. The locally special form is not yet supported.
  152.  
  153. Packages
  154. Some support was added here for shadowing symbols. The defpackage
  155. macro was added. The handling of shadowing symbols still may not
  156. be exactly correct.
  157.  
  158. Numbers
  159. Many number functions have been added, including sin, cos, tan, asin,
  160. acos, atan, sinh, cosh, tanh, exp, expt, log, float, isqrt. Large
  161. integers and complex numbers are now supported.
  162.  
  163. A few functions are still missing, but all the missing ones will
  164. explicitly generate "not implemented" messages rather than the
  165. normal "no function definition".
  166.  
  167. Integers between 0 and 500 now are cached i.e. new ones never 
  168. need to be created. (eq 100 100) is true, but (eq 501 501) is nil.
  169.  
  170. Interpreter
  171. The interpreter has been sped up by reducing the number of external
  172. memory accesses during the interpretation process.
  173.  
  174. Characters
  175. All characters are kept in a table, so never need to be created
  176. (as are integers between 0 and 500). This makes some character
  177. handling more efficient. Some character-related functions were 
  178. added.
  179.  
  180. Sequences
  181. A number of missing sequence functions are now implemented.
  182.  
  183. Strings
  184. A number of string functions which were missing in 1.01
  185. are now implemented.
  186.  
  187. Structures
  188. The defstruct macro has been rewritten in Common Lisp, and is
  189. included in the library 'structures.lisp'. The structure
  190. printing facility should now work correctly. Code which uses
  191. structures now compiles correctly.
  192.  
  193. Streams
  194. The functions with-output-to-string, read-from-string are
  195. now implemented. The standard stream *terminal-io* has been
  196. added.
  197.  
  198. Input/Output
  199. Much work has been done with the output functions. Many have
  200. been reimplemented. All the parameters to write are now supported.
  201. Circular lists can be read and written, print-level can be set,
  202. etc.
  203.  
  204. Pretty printing is still not supported.
  205.  
  206. The format function works better and more options are supported.
  207. I won't enumerate them here, but if you are really curious you
  208. could read the source code, which is included in format.lisp in
  209. the library folder.
  210.  
  211. Some output functions, in particular print, worked incorrectly
  212. in 1.01. These have been fixed, but the fix may cause your code
  213. to output differently. Sorry. :-)
  214.  
  215. Errors
  216. The warn function has been implemented.
  217.  
  218. Backquotes
  219. Guy Steele's backquote handling code, with optimizations (from CLTL2)
  220. is now used to handle backquote forms. This correctly handles 
  221. nested backquote forms, and generates optimally efficient forms.
  222.  
  223. Documentation
  224. Updated this README file.
  225. I have included a Common Ground version of the documentation
  226. which has a built-in viewer. You can use this version to
  227. browse and print the documentation if you don't have a copy
  228. of Microsoft Word.
  229.  
  230. The PowerLisp user guide has been updated to include the 1.1
  231. modifications.
  232.  
  233. Non-standard Extensions
  234. A graphics library has been added. To use it, execute the expression:
  235.  
  236. (require :graphics)
  237.  
  238. This will cause the library to be loaded and you may use it to
  239. create graphic images.
  240.  
  241. The following functions get loaded into the COMMON-LISP package:
  242.  
  243.         open-canvas 
  244.         use-canvas 
  245.         moveto 
  246.         lineto
  247.         setcolor
  248.         pensize
  249.         fillrect
  250.         fillpoly
  251.         clear-canvas
  252.  
  253. These functions contain (brief) usage documentation.
  254.  
  255.  
  256. PowerLisp 1.01
  257.  
  258. Updates since version 1.0:
  259.  
  260. Fixed problem which would cause PowerLisp to crash when
  261. exiting the program in certain cases.
  262.  
  263. Files selected from the Finder come up on top of the Worksheet
  264. rather than underneath it.
  265.  
  266. Fixed (setf third) function definition in cl.lisp (common lisp
  267. standard library).
  268.  
  269. Removed MacWrite version of the documentation. I do not
  270. have MacWrite to test it, and it reportedly has a problem.
  271.  
  272.  
  273.  
  274.  
  275.